package controlador;

import java.awt.AWTEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import modeloDAO.NivelDAO;
import modeloDTO.Buscaminas;
import modeloDTO.Nivel;

import vista.VistaBuscaminas;
import vista.VistaNivel;

public class ControladorVistaNivel implements ActionListener{

	VistaNivel ventanaNivel;
	VistaBuscaminas ventanaBuscaminas;
	Nivel nivel;
	Nivel nivelAuxiliar;
	private Buscaminas bm = new Buscaminas();
	ControladorVistaBuscaminas controladorVistaBuscaminas;
	NivelDAO nivelDAO = new NivelDAO();
	
	public ControladorVistaNivel(){
		super();
		this.ventanaNivel = new VistaNivel();
		this.ventanaNivel.addListener(this);
		this.ventanaNivel.setLocationRelativeTo(null);
		this.ventanaNivel.setVisible(true);
    	nivel = nivelDAO.consultarNivel("4");
    	nivelAuxiliar = nivel;
    	ventanaNivel.getjSpinnerFilas().setValue(String.valueOf(nivel.getNumeroFilas()));
    	ventanaNivel.getjSpinnerColumnas().setValue(String.valueOf(nivel.getNumeroColumnas()));
    	ventanaNivel.getjSpinnerMinas().setValue(String.valueOf(nivel.getNumeroMinas()));
	}
	
	public void HabilitarSpinners(boolean valor){
    	ventanaNivel.getjSpinnerFilas().setEnabled(valor);
    	ventanaNivel.getjSpinnerColumnas().setEnabled(valor);
    	ventanaNivel.getjSpinnerMinas().setEnabled(valor);
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
	
		if (ventanaNivel.getjRadioBtnBasico().isSelected()) {
			HabilitarSpinners(false);
			ventanaNivel.getjSpinnerFilas().setValue("10");
			ventanaNivel.getjSpinnerColumnas().setValue("10");
			ventanaNivel.getjSpinnerMinas().setValue("10");
			
        	nivel = nivelDAO.consultarNivel("1");
        	nivelDAO.ModificarNivel(nivel,"4"); //GuardaUltimoNivelConfigurado
        	bm.setNivel(nivel);
        	new ControladorVistaBuscaminas(bm);
		}
		else if (ventanaNivel.getjRadioBtnIntermedio().isSelected()) {
        	HabilitarSpinners(false);
			ventanaNivel.getjSpinnerFilas().setValue("16");
			ventanaNivel.getjSpinnerColumnas().setValue("16");
			ventanaNivel.getjSpinnerMinas().setValue("40");
		
			nivel = nivelDAO.consultarNivel("2");
			nivelDAO.ModificarNivel(nivel,"4");	//GuardaUltimoNivelConfigurado
        	bm.setNivel(nivel);
        	new ControladorVistaBuscaminas(bm);
        }
		else if (ventanaNivel.getjRadioBtnAvanzado().isSelected()) {
        	HabilitarSpinners(false);
			ventanaNivel.getjSpinnerFilas().setValue("22");
			ventanaNivel.getjSpinnerColumnas().setValue("22");
			ventanaNivel.getjSpinnerMinas().setValue("100");
			
			nivel = nivelDAO.consultarNivel("3");
			nivelDAO.ModificarNivel(nivel,"4");	//GuardaUltimoNivelConfigurado
        	bm.setNivel(nivel);
        	new ControladorVistaBuscaminas(bm);
        }
		else if (ventanaNivel.getjRadioBtnPersonalizado().isSelected()) {
        	HabilitarSpinners(true);
        	
        	int filas = Integer.valueOf((String) ventanaNivel.getjSpinnerFilas().getValue());
        	int columnas = Integer.valueOf((String) ventanaNivel.getjSpinnerColumnas().getValue());
        	int minas = Integer.valueOf((String) ventanaNivel.getjSpinnerMinas().getValue());
        	
        	if((filas * columnas) > minas){
        			nivel = new Nivel("4","Personalizado",filas,columnas,minas);
            		bm.setNivel(nivel);
            		new ControladorVistaBuscaminas(bm);
        	}
        	else ventanaNivel.getjSpinnerMinas().setValue(String.valueOf(filas * columnas - 10));
        }
        
        if(e.getSource()==ventanaNivel.getJbtnGuardar()){
        	ventanaNivel.dispose();
        }
        else if(e.getSource()==ventanaNivel.getjBtnSalir()){
        	ventanaNivel.dispose();
        	bm.setNivel(nivelAuxiliar);
        	new ControladorVistaBuscaminas(bm);
        } 	
	}

	public Buscaminas getBuscaminas() {
		return bm;
	}

}
